(const right-fringe)
(const :tag "No fringe indicators" nil)))
-(defcustom flymake-indicator-type (if (display-graphic-p)
- 'fringes
- 'margins)
+(defcustom flymake-indicator-type 'fringes
"Indicate which indicator type to use for display errors.
The value can be nil (don't indicate errors but just highlight them),
-fringes (use fringes) or margins (use margins)
+the symbol `fringes' (use fringes) or the symbol `margins' (use
+margins).
Difference between fringes and margin is that fringes support displaying
bitmaps on graphical displays and margins display text in a blank area
from current buffer that works in both graphical and text displays.
+Thus, even when `fringes' is selected, margins will still be used on
+text displays and also when fringes are disabled.
See Info node `Fringes' and Info node `(elisp)Display Margins'."
- :version "30.1"
+ :version "30.2"
:type '(choice (const :tag "Use Fringes" fringes)
- (const :tag "Use Margins "margins)
+ (const :tag "Use Margins" margins)
(const :tag "No indicators" nil)))
(defcustom flymake-margin-indicators-string
(add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook nil t)
(add-hook 'eldoc-documentation-functions 'flymake-eldoc-function t t)
+ (when (and (eq flymake-indicator-type 'fringes)
+ (not (cl-case flymake-fringe-indicator-position
+ (left-fringe (< 0 (nth 0 (window-fringes))))
+ (right-fringe (< 0 (nth 1 (window-fringes)))))))
+ ;; There are no fringes in the buffer, fallback to margins.
+ (setq-local flymake-indicator-type 'margins))
+
;; AutoResize margins.
(flymake--resize-margins)